Page({
  // 数据
  data: {
    list: [1, 2, 3],
    obj: {
      name: "张三",
      age: 18,
    },
  },
  // 获取数据
  getData() {
    // 用户点击按钮后开启显示加载提示框
    wx.showLoading({
      // title：用来显示提示内容，提示的内容不会自动换行，如果提示的内容较多，多出的内容会被隐藏
      title: "加载中...",
      // mask：是否显示透明蒙层，防止触摸穿透(即在加载时不允许用户操作其他)，默认值为false
      mask: true,
    });
    // 如果需要发起网络请求，需要使用 wx.request API
    wx.request({
      // url：接口地址
      url: "https://gmall-prod.atguigu.cn/mall-api/index/findBanner",
      // 请求方式
      method: "GET",
      // 请求参数
      data: {},
      // 请求头
      header: {},
      // API 调用成功后，执行的回调
      success: (res) => {
        console.log(res);
        // 请求成功保存返回的数据
        if (res.data.code == 200) {
          this.setData({
            list: res.data.data,
          });
        }
      },
      // API 调用失败后，执行的回调
      fail: (err) => {
        console.log(err);
      },
      // 成功或失败都会调用
      complete: (res) => {
        console.log(res);
        // 关闭loading提示框
        wx.hideLoading();
      },
    });
  },
  // 删除数据
  async deleteData() {
    // 点击按钮后显示模态对话框
    const res = await wx.showModal({
      title: "提示", // 提示的标题
      content: "是否删除商品数据？", // 提示的内容
      confirmColor: "skyblue", // 确定按钮字体颜色
      // 可以使用 promise代替complete
      /* complete: (res) => {
        if (res.cancel) {
          console.log("用户点击取消！");
          wx.showToast({
            title: "取消删除",
            icon: "error",
            duration: 2000,
            mask: true,
          });
        }
        if (res.confirm) {
          console.log("用户点击确定！");
          // 删除数据
          this.setData({
            list: [],
          });
          // 显示消息提示框
          wx.showToast({
            title: "删除成功",
            icon: "success",
            mask: true,
            duration: 2000,
          });
        }
      }, */
    });
    console.log(res);
    // 点击取消{errMsg: "showModal:ok", cancel: true, confirm: false}
    // 点击确定{errMsg: "showModal:ok", cancel: false, confirm: true, content: null}
    const { confirm } = res;
    if (confirm) {
      // 用户点击了确定，清空数据
      this.setData({
        list: [],
      });
      // 展示消息提示框
      wx.showToast({
        title: "删除成功", // 提示内容
        mask: true, // 是否显示透明蒙层，防止触摸穿透
        icon: "success", // 提示图标 error、loading、none、success
        duration: 2000, // 提示框显示的时间 单位ms
      });
    } else {
      // 用户点击了取消
      wx.showToast({
        title: "取消删除",
        mask: true,
        icon: "error",
        duration: 2000,
      });
    }
  },
  // 将数据存储到本地
  setStorage() {
    // 同步存储：wx.setStorageSync("key", value);
    /* wx.setStorageSync("list", this.data.list);
    wx.setStorageSync("obj", this.data.obj); */
    // 异步存储:wx.setStorage({key:"key",data:data})
    wx.setStorage({
      key: "list",
      data: this.data.list,
    }),
      wx.setStorage({
        key: "obj",
        data: this.data.obj,
      });
    /* 注意：
          每次只可以存储一条数据
          小程序中存储的数据可以为任意类型，无需转换为字符串 */
  },
  // 获取本地存储的数据
  async getStorage() {
    // 同步获取：wx.getStorageSync("key");
    /* const obj = wx.getStorageSync("obj");
    console.log(obj); */
    // 异步获取：wx.getStorage({ key: "key" });
    const obj = await wx.getStorage({ key: "obj" });
    console.log(obj.data);
  },
  // 删除本地存储的数据
  removeStorage() {
    // 同步删除：wx.removeStorageSync('key')
    wx.removeStorageSync("obj");
    // 异步删除：wx.removeStorage({key: 'key',})
    wx.removeStorage({
      key: "obj",
    });
  },
  // 清空本地存储的全部数据
  clearStorage() {
    // 同步清空：wx.clearStorageSync()
    wx.clearStorageSync();
    // 异步清空：wx.clearStorage();
    wx.clearStorage();
  },
  // wx.navigateTo({url: "url",}); 保留当前页面跳转到非tabBar页面
  navigateTo() {
    wx.navigateTo({
      url: "/pages/list/list?id=01&sex=1", // 路由跳转并传参
    });
  },
  // wx.redirectTo({url: 'url',}); 关闭当前页面跳转到非tabBar页面
  redirectTo() {
    wx.redirectTo({
      url: "/pages/list/list?id=02&sex=0", // 路由跳转并传参
    });
  },
  // wx.switchTab({url: 'url',}); 只能跳转到tabBar页面
  switchTab() {
    wx.switchTab({
      url: "/pages/index/index",
      // url: "/pages/index/index?id=1", // 注意：不支持携带query参数
    });
  },
  // wx.reLaunch({url: 'url',}); 关闭所有页面跳转到指定页面(任意页面)
  reLaunch() {
    wx.reLaunch({
      url: "/pages/index/index?id=03&sex=1",
      // url: "/pages/list/list?id=03&sex=1",
    });
  },
  // 页面上拉触底事件的处理函数
  onReachBottom() {
    // console.log("用户上拉加载");
    // 实现上拉加载效果
    wx.showLoading({
      title: "加载中",
      mask: true,
    });
    // 当用户上拉加载时，需要对数字进行累加，每次累加 3 个数字
    // 目前：[1,2,3]  上拉后：[1,2,3,4,5,6] 再次上拉：[1,2,3,4,5,6,7,8,9]
    // 获取目前数组最后一项n 然后进行n+1,n+2,n+3
    setTimeout(() => {
      // 获取数组最后一项
      let lastNum = this.data.list[this.data.list.length - 1];
      // 定义需要追加的元素
      const addLsit = [lastNum + 1, lastNum + 2, lastNum + 3];
      // 数组合并，并驱动页面更新
      this.setData({
        list: this.data.list.concat(addLsit),
      });
      // 隐藏提示框
      wx.hideLoading();
    }, 1500);
  },
  // 页面下拉刷新触发的处理函数
  onPullDownRefresh() {
    // 显示加载提示框
    wx.showLoading({
      title: "数据正在加载中...",
    });
    // 定时器模拟网络请求，1 秒后数据返回
    setTimeout(() => {
      // 重置数据
      this.setData({
        arr: [1, 2, 3],
      });
      // 数据返回，隐藏 Loading
      wx.hideLoading();
      // 显示刷新成功提示框
      wx.showToast({
        title: "下拉刷新完成",
        icon: "succes",
      });
      // 数据返回，关闭 scroll-view 下拉刷新效果
      this.setData({
        triggered: false,
      });
    }, 1000);
  },
});
